package com.haiyou.data.common.accessor.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.concurrent.TimeUnit;

/**
 * 生命周期定义
 * 
 * @author xingyuan
 *
 */
@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.FIELD, ElementType.TYPE })
@Inherited
@Documented
public @interface ExpiryPolicy {

	/**
	 * 存活时间，小于0表示永久存在，如果存储器仅仅使用redis，那么不会设置过期，使用者需要根据情况自行调用expire，在同步到mysql的存储器默认实现了过期设置，除特殊情况用户不需要关心分布式对象的生命周期
	 * 
	 * @return
	 */
	int timeToLive() default 5;

	/**
	 * 时间单位
	 * 
	 * @return
	 */
	TimeUnit timeUnit() default TimeUnit.MINUTES;
}
